﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using LIM.forms;
using Telerik.WinControls;
using Telerik.WinControls.UI;

namespace LIM
{
	class LIMDatas
	{
        public static List<MenuPermissionsInfo> CreateDatas_MenuPermissionsInfo()
        {
            List<MenuPermissionsInfo> list = new List<MenuPermissionsInfo>();
            
            // Start menu
            list.Add(new MenuPermissionsInfo { MenuName = "Start Menu: Danh mục Phòng Ban", IsVisibility = false, OrderNumber = 0, Name = "radMenuItem_DanhMucPhongBan" });
            list.Add(new MenuPermissionsInfo { MenuName = "Start Menu: Danh mục Chỉ tiêu", IsVisibility = false, OrderNumber = 0, Name = "radMenuItem_DanhMucChiTieu" });
            list.Add(new MenuPermissionsInfo { MenuName = "Start Menu: Danh mục Loại Mẫu", IsVisibility = false, OrderNumber = 0, Name = "radMenuItem_DanhMucLoaiChiTieu" });
            list.Add(new MenuPermissionsInfo { MenuName = "Start Menu: Danh mục Hệ thống", IsVisibility = false, OrderNumber = 0, Name = "radMenuItem_DanhMucHeThong" });
            list.Add(new MenuPermissionsInfo { MenuName = "Start Menu: Quản trị người dùng", IsVisibility = false, OrderNumber = 0, Name = "radMenuItem_QuanTriNguoiDung" });
            list.Add(new MenuPermissionsInfo { MenuName = "Start Menu: Phân quyền hệ thống", IsVisibility = false, OrderNumber = 0, Name = "radMenuItem_PhanQuyenHeThong" });
            list.Add(new MenuPermissionsInfo { MenuName = "Start Menu: Cấu hình kết nối", IsVisibility = false, OrderNumber = 0, Name = "radMenuItem_CauHinhKetNoi" });

            // Tab menu
            list.Add(new MenuPermissionsInfo { MenuName = "Dịch vụ Khách hàng", IsVisibility = false, OrderNumber = 0, Name = "ribbonTab_DichVuKhachHang" });

            list.Add(new MenuPermissionsInfo { MenuName = "- Khách hàng", IsVisibility = false, OrderNumber = 0, Name = "radRibbonBarGroup_KhachHang" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Danh sách", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DanhSachKhachHang" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Tạo mới", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_TaoMoiKhachHang" });

            list.Add(new MenuPermissionsInfo { MenuName = "- Thông tin Liên hệ", IsVisibility = false, OrderNumber = 0, Name = "radRibbonBarGroup_ThongTinLienHe" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Danh sách", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DanhSachLienHe" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Tạo mới", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_TaoMoiLienHe" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Nhật ký", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_NhatKyLienLac" });

            list.Add(new MenuPermissionsInfo { MenuName = "- Báo giá", IsVisibility = false, OrderNumber = 0, Name = "radRibbonBarGroup_BaoGia" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Danh sách", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DanhSachBaoGia" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Tạo mới", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_TaoMoiBaoGia" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Bảng giá", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_BangGiaChiTieu" });

            list.Add(new MenuPermissionsInfo { MenuName = "- Hợp đồng", IsVisibility = false, OrderNumber = 0, Name = "radRibbonBarGroup_HopDong" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Danh sách", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DanhSachHopDong" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Tạo mới Hợp đồng", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_TaoMoiHopDong" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Tạo mới Phiếu Nhận Mẫu", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_TaoMoiPhieuNhanMau" });

            list.Add(new MenuPermissionsInfo { MenuName = "- Hợp đồng", IsVisibility = false, OrderNumber = 0, Name = "radRibbonBarGroup_HopDong" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Danh sách", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DanhSachHopDong" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Tạo mới Hợp đồng", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_TaoMoiHopDong" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Tạo mới Phiếu Nhận Mẫu", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_TaoMoiPhieuNhanMau" });

            list.Add(new MenuPermissionsInfo { MenuName = "Kiểm nghiệm", IsVisibility = false, OrderNumber = 0, Name = "ribbonTab_KiemNghiem" });

            list.Add(new MenuPermissionsInfo { MenuName = "- Tại phòng dịch vụ khách hàng", IsVisibility = false, OrderNumber = 0, Name = "radRibbonBarGroup_TaiPhongDichVuKhachHang" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Danh sách phiếu nhận mẫu", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DanhSachPhieuNhanMau" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Danh sách mẫu được lưu", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DanhSachMauDaLuu" });

            list.Add(new MenuPermissionsInfo { MenuName = "- Tại phòng thí nghiệm", IsVisibility = false, OrderNumber = 0, Name = "radRibbonBarGroup_TaiPhongThiNghiem" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Danh sách mẫu tiếp nhận", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DanhSachMauTiepNhan" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Lập kế hoạch kiểm nghiệm", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_LapKeHoachKiemNghiem" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Nhân sự", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_CongViecCuaNhanSuTaiPhongBan" });

            list.Add(new MenuPermissionsInfo { MenuName = "Công nợ", IsVisibility = false, OrderNumber = 0, Name = "ribbonTab_CongNo" });

            list.Add(new MenuPermissionsInfo { MenuName = "- Công nợ", IsVisibility = false, OrderNumber = 0, Name = "radRibbonBarGroup_CongNo" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Danh sách công nợ", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DanhSachCongNo" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Theo dõi thay đổi công nợ", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_ThietLapQuanLyCongNo" });

            list.Add(new MenuPermissionsInfo { MenuName = "Tài sản", IsVisibility = false, OrderNumber = 0, Name = "ribbonTab_TaiSan" });

            list.Add(new MenuPermissionsInfo { MenuName = "- Tài sản", IsVisibility = false, OrderNumber = 0, Name = "radRibbonBarGroup_TaiSan" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Danh sách tài sản", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DanhSachTaiSan" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Nhập tài sản", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_NhapTaiSan" });

            list.Add(new MenuPermissionsInfo { MenuName = "- Kiểm kê tài sản", IsVisibility = false, OrderNumber = 0, Name = "radRibbonBarGroup_KiemKeTaiSan" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Danh sách đợt kiểm kê", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DanhSachDotKiemKe" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Tạo đợt kiểm kê", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_TaoDotKiemKe" });
            list.Add(new MenuPermissionsInfo { MenuName = "-- Điều chỉnh sau kiểm kê", IsVisibility = false, OrderNumber = 0, Name = "radButtonElement_DieuChinhSauKiemKe" });

            list.Add(new MenuPermissionsInfo { MenuName = "Báo cáo", IsVisibility = false, OrderNumber = 0, Name = "ribbonTab_BaoCao" });

            for (int i = 0; i < list.Count; i++)            
                list[i].OrderNumber = i + 1;            

            return list;
        }

        public static List<FormPermissionsInfo> CreateDatas_FormPermissionsInfo()
        {
            List<FormPermissionsInfo> list = new List<FormPermissionsInfo>();

            // Forms
            //FormPermissionsInfo form_01 = new FormPermissionsInfo { FormName = "Start Menu: Danh mục Phòng Ban", IsVisibility = false, FormObject = new radForm_DanhMuc_PhongBan(), UserControls=new List<FormPermissionsInfo>() };
            //form_01.UserControls.Add(new FormPermissionsInfo { FormName = "Thông tin Phòng Ban", IsVisibility = false, FormObject = new forms.uc_DanhMuc_PhongBan.uc_DanhMuc_PhongBan_ThongTinPhongBan() });
            //form_01.UserControls.Add(new FormPermissionsInfo { FormName = "Danh sách nhân viên", IsVisibility = false, FormObject = new forms.uc_DanhMuc_PhongBan.uc_DanhMuc_PhongBan_DanhSachNhanVien() });
            //form_01.UserControls.Add(new FormPermissionsInfo { FormName = "Chỉ tiêu kiểm nghiệm", IsVisibility = false, FormObject = new forms.uc_DanhMuc_PhongBan.uc_DanhMuc_PhongBan_ChiTieuKiemNghiem() });
            //list.Add(form_01);

            //FormPermissionsInfo form_02 = new FormPermissionsInfo { FormName = "Start Menu: Danh mục Chỉ tiêu", IsVisibility = false, FormObject = new radForm_DanhMuc_ChiTieu(), UserControls = new List<FormPermissionsInfo>() };
            //form_02.UserControls.Add(new FormPermissionsInfo { FormName = "Thông tin Chỉ tiêu", IsVisibility = false, FormObject = new forms.uc_DanhMuc_ChiTieu.uc_DanhMuc_ChiTieu_ThongTinChiTieu() });
            //form_02.UserControls.Add(new FormPermissionsInfo { FormName = "Bảng giá", IsVisibility = false, FormObject = new forms.uc_DanhMuc_ChiTieu.uc_DanhMuc_ChiTieu_BangGia() });
            //form_02.UserControls.Add(new FormPermissionsInfo { FormName = "Sử dụng Máy móc. NVL", IsVisibility = false, FormObject = new forms.uc_DanhMuc_ChiTieu.uc_DanhMuc_ChiTieu_SuDungTaiSan() });
            //form_02.UserControls.Add(new FormPermissionsInfo { FormName = "Phương pháp thực hiện kiểm nghiệm", IsVisibility = false, FormObject = new forms.uc_DanhMuc_ChiTieu.uc_DanhMuc_ChiTieu_PhuongPhap() });
            //form_02.UserControls.Add(new FormPermissionsInfo { FormName = "Nhân viên thực hiện phân tích", IsVisibility = false, FormObject = new forms.uc_DanhMuc_ChiTieu.uc_DanhMuc_ChiTieu_NhanVienThucHien() });
            //list.Add(form_02);

            //FormPermissionsInfo form_03 = new FormPermissionsInfo { FormName = "Start Menu: Danh mục Loại Mẫu", IsVisibility = false, FormObject = new radForm_DanhMuc_LoaiChiTieu(), UserControls = new List<FormPermissionsInfo>() };
            //form_03.UserControls.Add(new FormPermissionsInfo { FormName = "Thông tin loại Mẫu", IsVisibility = false, FormObject = new forms.uc_DanhMuc_LoaiChiTieu.uc_DanhMuc_LoaiChiTieu_ThongTinLoaiChiTieu() });
            //form_03.UserControls.Add(new FormPermissionsInfo { FormName = "Danh sách chỉ tiêu", IsVisibility = false, FormObject = new forms.uc_DanhMuc_LoaiChiTieu.uc_DanhMuc_LoaiChiTieu_DanhSachChiTieu() });
            //list.Add(form_03);

            //FormPermissionsInfo form_04 = new FormPermissionsInfo { FormName = "Start Menu: Danh mục Hệ thống", IsVisibility = false, OrderNumber = 0, FormObject = new radForm_DanhMuc_DanhMucHeThong(), UserControls = new List<FormPermissionsInfo>() };
            //list.Add(form_04);

            list.Add(new FormPermissionsInfo { ID = 1, ParentID = 0, FormName = "Start Menu: Danh mục Phòng Ban", IsVisibility = false, FormObject = new radForm_DanhMuc_PhongBan() });
            list.Add(new FormPermissionsInfo { ID = 2, ParentID = 1, FormName = "Thông tin Phòng Ban", IsVisibility = false, FormObject = new forms.uc_DanhMuc_PhongBan.uc_DanhMuc_PhongBan_ThongTinPhongBan() });
            list.Add(new FormPermissionsInfo { ID = 3, ParentID = 1, FormName = "Danh sách nhân viên", IsVisibility = false, FormObject = new forms.uc_DanhMuc_PhongBan.uc_DanhMuc_PhongBan_DanhSachNhanVien() });
            list.Add(new FormPermissionsInfo { ID = 4, ParentID = 1, FormName = "Chỉ tiêu kiểm nghiệm", IsVisibility = false, FormObject = new forms.uc_DanhMuc_PhongBan.uc_DanhMuc_PhongBan_ChiTieuKiemNghiem() });

            list.Add(new FormPermissionsInfo { ID = 5, ParentID = 0, FormName = "Start Menu: Danh mục Chỉ tiêu", IsVisibility = false, FormObject = new radForm_DanhMuc_ChiTieu() });
            list.Add(new FormPermissionsInfo { ID = 6, ParentID = 5, FormName = "Thông tin Chỉ tiêu", IsVisibility = false, FormObject = new forms.uc_DanhMuc_ChiTieu.uc_DanhMuc_ChiTieu_ThongTinChiTieu() });
            list.Add(new FormPermissionsInfo { ID = 7, ParentID = 5, FormName = "Bảng giá", IsVisibility = false, FormObject = new forms.uc_DanhMuc_ChiTieu.uc_DanhMuc_ChiTieu_BangGia() });
            list.Add(new FormPermissionsInfo { ID = 8, ParentID = 5, FormName = "Sử dụng Máy móc. NVL", IsVisibility = false, FormObject = new forms.uc_DanhMuc_ChiTieu.uc_DanhMuc_ChiTieu_SuDungTaiSan() });
            list.Add(new FormPermissionsInfo { ID = 9, ParentID = 5, FormName = "Phương pháp thực hiện kiểm nghiệm", IsVisibility = false, FormObject = new forms.uc_DanhMuc_ChiTieu.uc_DanhMuc_ChiTieu_PhuongPhap() });
            list.Add(new FormPermissionsInfo { ID = 10, ParentID = 5, FormName = "Nhân viên thực hiện phân tích", IsVisibility = false, FormObject = new forms.uc_DanhMuc_ChiTieu.uc_DanhMuc_ChiTieu_NhanVienThucHien() });

            list.Add(new FormPermissionsInfo { ID = 11, ParentID = 0, FormName = "Start Menu: Danh mục Loại Mẫu", IsVisibility = false, FormObject = new radForm_DanhMuc_LoaiChiTieu() });
            list.Add(new FormPermissionsInfo { ID = 12, ParentID = 11, FormName = "Thông tin loại Mẫu", IsVisibility = false, FormObject = new forms.uc_DanhMuc_LoaiChiTieu.uc_DanhMuc_LoaiChiTieu_ThongTinLoaiChiTieu() });
            list.Add(new FormPermissionsInfo { ID = 13, ParentID = 11, FormName = "Danh sách chỉ tiêu", IsVisibility = false, FormObject = new forms.uc_DanhMuc_LoaiChiTieu.uc_DanhMuc_LoaiChiTieu_DanhSachChiTieu() });

            list.Add(new FormPermissionsInfo { ID = 14, ParentID = 0, FormName = "Start Menu: Danh mục Hệ thống", IsVisibility = false , FormObject = new radForm_DanhMuc_DanhMucHeThong() });

            list.Add(new FormPermissionsInfo { ID = 15, ParentID = 0, FormName = "Start Menu: Quản trị người dùng", IsVisibility = false, FormObject = new radForm_SYS_QuanTriNguoiDung() });
            list.Add(new FormPermissionsInfo { ID = 16, ParentID = 15, FormName = "Thông tin Nhân viên", IsVisibility = false, FormObject = new forms.uc_SYS_QuanTriNguoiDung.uc_SYS_QuanTriNguoiDung_ThongTinNhanVien() });
            list.Add(new FormPermissionsInfo { ID = 17, ParentID = 15, FormName = "Nhóm người dùng", IsVisibility = false, FormObject = new forms.uc_SYS_QuanTriNguoiDung.uc_SYS_QuanTriNguoiDung_NhomNguoiDung() });
            

            // Set name for item
            foreach (var item in list)
            {
                item.Controls = new List<ControlPermissionsInfo>();

                if (item.FormObject is BaseRadForm)
                {
                    BaseRadForm baseForm = (BaseRadForm)item.FormObject;
                    item.Name = baseForm.Name;

                    foreach (var item2 in baseForm.ControlPermissionList)
                    {
                        if (item2 is RadMenuItem)
                        {
                            RadMenuItem radItem = (RadMenuItem)item2;
                            item.Controls.Add(new ControlPermissionsInfo { ControlName = radItem.Text, Name = radItem.Name });
                        }
                        else if (item2 is RadButton)
                        {
                            RadButton radItem = (RadButton)item2;
                            item.Controls.Add(new ControlPermissionsInfo { ControlName = radItem.Text, Name = radItem.Name });
                        }
                    }

                }
                else if (item.FormObject is BaseUserControl)
                {
                    BaseUserControl baseForm = (BaseUserControl)item.FormObject;
                    item.Name = baseForm.Name;

                    foreach (var item2 in baseForm.ControlPermissionList)
                    {
                        if (item2 is RadMenuItem)
                        {
                            RadMenuItem radItem = (RadMenuItem)item2;
                            item.Controls.Add(new ControlPermissionsInfo { ControlName = radItem.Text, Name = radItem.Name });
                        }
                        else if (item2 is RadButton)
                        {
                            RadButton radItem = (RadButton)item2;
                            item.Controls.Add(new ControlPermissionsInfo { ControlName = radItem.Text, Name = radItem.Name });
                        }
                    }

                }
                else
                    item.Name = "";
            }

            return list;
        }
	}
}
